package com.zyd.service.wechat;

import com.zyd.io.model.MealEntity;
import com.zyd.io.model.UserEntity;
import com.zyd.io.model.VehicleEntity;
import com.zyd.io.vo.vehicle.VehicleTrackResVO;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

public interface WeChatService {
    /**
     * 发送验证码
     * @param mobile
     * @throws Exception
     */
    void smsCode(String mobile) throws Exception;

    /**
     * 用户注册
     * @param param
     * @return
     */
    Map register(Map<String, String> param);

    /**
     * 往微信后台获取 openId
     * @param param
     * @return
     */
    String getOpenIdByWeChat(Map<String, String> param);

    /**
     * 根据openId获取用户
     * @param openId
     * @return
     */
    UserEntity findUserByOpenId(String openId);

    /**
     * 根据用户id查询车辆 也通过用户手机号
     * @param userid
     * @return
     */
    List<VehicleEntity> findCarByUserid(String userid);

    List<Map<String, Object>> findNetwork();


    /**
     * 轨迹
     * @param param
     * @return
     * @throws ParseException
     */
    List<VehicleTrackResVO> findCarTrackByExample(Map<String, String> param) throws ParseException;

    /**
     * 开锁 解锁 0为解锁 1为锁定
     * @param tagcode
     * @param state
     */
    void updateLock(String tagcode, String state);

    /**
     * 查询车辆跟车辆的保险
     * @param userid
     * @return
     */
    List findMealByuserid(String userid);

    /**
     * 根据车辆的区县查询出对应地区的套餐
     *
     * @param newareaid
     * @return
     */
    List findSafeByNewareaid(String newareaid);
    /**
     * 根据车辆id查询明细
     *
     * @param id
     * @return
     */
    VehicleEntity findVehicle(String id);

    /**
     * 车辆续保
     * 统一下单
     * @param param
     * @return
     */
    Map renewal(Map<String, String> param);

    /**
     * 支付成功
     * @param orderId
     */
    Map payInfo(String orderId);

    /**
     * 查询所有的区县 以供选择
     * @return
     */
    List findCountry();

    /**
     * 将车辆信息存入 审核车辆表中去
     * @param vehicle
     */
    UserEntity addVehicleToExamine(VehicleEntity vehicle,Integer state);

    /**
     * 通过微信支付 添加车辆
     * @param param
     */
    Map addVehicleOfWeChatPay(VehicleEntity param);

    /**
     * 添加车辆 微信支付成功后查询
     * @param orderId
     */
    void addVehiclePayInfo(String orderId);

    /**
     * 通过userid查询未审核车辆咯
     * @param userid
     * @return
     */
    List<VehicleEntity> findVehicleExamine(String userid);
}
